home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 21 / CU Amiga Magazine's Super CD-ROM 21 (1998)(EMAP Images)(GB)[!][issue 1998-04].iso / CUCD / Games / ADoom / ADoom_src / amiga_sega.s < prev    next >
Encoding:
Text File  |  1998-01-31  |  1.5 KB  |  104 lines

  1.         mc68020
  2.         multipass
  3.     if (_eval(DEBUG)&$8000)
  4.         debug    on,lattice4
  5.     endc
  6.  
  7.         XDEF    @Sega6
  8.         XDEF    @Sega3
  9.  
  10.         SECTION    CODE
  11.  
  12. ; returns - xxSAxxxxxxCBMXYZxxSAxxDUxxCBRLDU
  13.  
  14.         cnop    0,4
  15.  
  16. @Sega6        bsr.b    GetSega            ; xxSAxxDUxxCBRLDU
  17.         swap    d0
  18.         bsr.b    GetSega            ; xxSAxxDUxxCBRLDU
  19.         bsr.b    GetSega            ; xxSAxxxxxxCBRLDU
  20.         bsr.b    GetSega            ; xxSAxxxxxxCBMXYZ
  21.         move.w    #$FF00,$DFF034        ; SEL=1
  22.         swap    d0
  23.         rts
  24.  
  25. ; returns - 0000000000000000xxSAxxDUxxCBRLDU
  26.  
  27.         cnop    0,4
  28.  
  29. @Sega3        moveq    #0,d0
  30.         bsr.b    GetSega
  31.         move.w    #$FF00,$DFF034        ; SEL=1
  32.         rts
  33.  
  34.         cnop    0,4
  35.  
  36. GetSega        movem.l    d1-d3,-(a7)
  37.         clr.w    d0
  38.  
  39.         move.w    #$FF01,$DFF034        ; SEL=1, dump caps
  40.         moveq    #22,d3
  41. .hl        tst.b    $BFE001
  42.         dbra    d3,.hl
  43.  
  44.         btst    #7,$BFE001
  45.         bne.b    .1
  46.         bset    #4,d0            ; B/0
  47. .1        move.w    $DFF016,d1
  48.         btst    #14,d1
  49.         bne.b    .2
  50.         bset    #5,d0            ; C/0
  51. .2        move.w    $DFF00C,d1
  52.         btst    #1,d1
  53.         beq.b    .3
  54.         bset    #3,d0            ; R/M
  55. .3        btst    #9,d1
  56.         beq.b    .4
  57.         bset    #2,d0            ; L/X
  58. .4        move.w    d1,d2
  59.         lsl.w    #1,d2
  60.         eor.w    d2,d1
  61.         btst    #1,d1
  62.         beq.b    .5
  63.         bset    #1,d0            ; D/Y
  64. .5        btst    #9,d1
  65.         beq.b    .6
  66.         bset    #0,d0            ; U/Z
  67.  
  68. .6        lsl.w    #8,d0
  69.  
  70.         move.w    #$EF01,$DFF034        ; SEL=0, dump caps
  71.         moveq    #22,d3
  72. .ll        tst.b    $BFE001
  73.         dbra    d3,.ll
  74.  
  75.         btst    #7,$BFE001
  76.         bne.b    .11
  77.         bset    #4,d0            ; A/0
  78. .11        move.w    $DFF016,d1
  79.         btst    #14,d1
  80.         bne.b    .12
  81.         bset    #5,d0            ; S/0
  82. .12        move.w    $DFF00C,d1
  83.         btst    #1,d1
  84.         beq.b    .13
  85.         bset    #3,d0            ; 0/1
  86. .13        btst    #9,d1
  87.         beq.b    .14
  88.         bset    #2,d0            ; 0/1
  89. .14        move.w    d1,d2
  90.         lsl.w    #1,d2
  91.         eor.w    d2,d1
  92.         btst    #1,d1
  93.         beq.b    .15
  94.         bset    #1,d0            ; D/1
  95. .15        btst    #9,d1
  96.         beq.b    .16
  97.         bset    #0,d0            ; U/1
  98.  
  99. .16        ror.w    #8,d0
  100.         movem.l    (a7)+,d1-d3
  101.         rts
  102.  
  103.         END
  104.